/**
  ******************************************************************************
  * @file    app_sharebuff.h
  * @author  tuancheng_Zero
  * @version V0.1
  * @date    08/28/2024
  * @brief   share buff file
  ******************************************************************************
*/
#ifndef  __APP_SHAREBUFFER_H__
#define  __APP_SHAREBUFFER_H__
#ifdef __cplusplus
extern "C" {
#endif

#include "app_database.h"

/*-------------------------------------------- 实时数据 ----------------------------------------------------*/
// 实时状态数据
typedef __packed struct{
    uint16_t GenPhaVolt_U                   ;//0x00 // 线路 1 电压 U1
    uint16_t GenPhaVolt_V                   ;//0x02 // 线路 2 电压 U2
    uint16_t GenPhaVolt_W                   ;//0x04 // 线路 3 电压 U3
    uint16_t GenPhaVolt_average             ;//0x06 // 平均相电压U
    uint16_t GenLineVolt_Uab                ;//0x08 // 电压 Uab
    uint16_t GenLineVolt_Ubc                ;//0x0A // 电压 Ubc
    uint16_t GenLineVolt_Uca                ;//0x0C // 电压 Uca
    uint16_t GenLineVolt_average            ;//0x0E // 平均线电压L-L
    uint16_t GenLineVolt_GenCurrent_U       ;//0x10 // 线路 1 电流 I1
    uint16_t GenLineVolt_GenCurrent_V       ;//0x12 // 线路 2 电流 I2
    uint16_t GenLineVolt_GenCurrent_W       ;//0x14 // 线路 3 电流 I3
    uint16_t GenLineVolt_GenCurrent_average ;//0x16 // 三相平均电流 I
    uint16_t GenActiPower_U                 ;//0x18 // 有功功率 P1
    uint16_t GenActiPower_V                 ;//0x1A // 有功功率 P2
    uint16_t GenActiPower_W                 ;//0x1C // 有功功率 P3
    uint16_t GenActiPower_total             ;//0x1E // 合计有功功率 P
    uint16_t GenReacPower_U                 ;//0x20 // 无功功率 Q1
    uint16_t GenReacPower_V                 ;//0x22 // 无功功率 Q2
    uint16_t GenReacPower_W                 ;//0x24 // 无功功率 Q3
    uint16_t GenReacPower_total             ;//0x26 // 合计无功功率 Q
    uint16_t GenAppePower_U                 ;//0x28 // 视在功率 S1
    uint16_t GenAppePower_V                 ;//0x2A // 视在功率 S2
    uint16_t GenAppePower_W                 ;//0x2C // 视在功率 S3
    uint16_t GenAppePower_total             ;//0x2E // 合计视在功率 S
    uint16_t PowFactor_U                    ;//0x30 // 功率因数 PF1
    uint16_t PowFactor_V                    ;//0x32 // 功率因数 PF2
    uint16_t PowFactor_W                    ;//0x34 // 功率因数 PF2
    uint16_t PowFactor_average              ;//0x36 // 平均功率因数 PF
    uint16_t GenFrequency                   ;//0x38 // 电压频率 发电频率
    uint16_t LoadExci_volt                  ;//0x3A // 励磁电压
    uint16_t LoadExci_current               ;//0x3C // 励磁电流
    uint16_t Operate_CurrProc               ;//0x3E // 当前测试流程
    uint16_t CurrProcCountdown              ;//0x40 // 当前测试流程执行时间
    uint16_t OperMode                       ;//0x42 // 测试模式-手动自动
    uint16_t LimitAlarm                     ;//0x44 // 限位告警
    uint16_t TestProceAlarm1                ;//0x46 // 流程告警1
    uint16_t TestProceAlarm2                ;//0x48 // 流程告警2
    uint16_t TestProceAlarm3                ;//0x4A // 流程告警3
    uint16_t TestProceAlarm4                ;//0x4C // 流程告警4
    uint8_t  tm_year                        ;//0x4E // 年
    uint8_t  tm_mon                         ;//0x4F // 月
    uint8_t  tm_mday                        ;//0x50 // 日
    uint8_t  tm_hour                        ;//0x51 // 时
    uint8_t  tm_min                         ;//0x52 // 分
    uint8_t  tm_sec                         ;//0x53 // 秒
    uint16_t Runing_Time                    ;//0x54 // 发电机运行时间
    // uint8_t Product_number[20]              ;//0x56 // 产品编号
    uint16_t BuildVoltBefore                ;//0x56 // 建磁电压（前)
    uint16_t BuildVoltAfter                 ;//0x58 // 建磁电压（后)         
    uint16_t PrimeMotorFreq                 ;//0x5A // 原动机当前运行频率       
    uint16_t Operate_Teststatus             ;//0x5C // 流程数据状态
}RealTimeStatusData_CKP;   
// 实时状态数据
typedef __packed struct{
    uint32_t Update_Count;                      // 数据更新计数器
    uint16_t InputLine_Mode;                    // 接线方式
    uint16_t Language_Mode;                     // 语言
    uint16_t WaveRecord_rate;                   // 录波模式
    uint16_t TransientResponse_rate;            // 瞬态测试响应时间
    uint16_t EnergyAcc_time;                    // 电能累计时间
    uint16_t CurrProcCountdown;                 // 当前测试流程执行时间
    float32_t RatedLineVoltage;                 // 额定线电压
    float32_t RatedPhaseVoltage;                // 额定相电压
    float32_t RatedCurrent;                     // 额定频率
    float32_t RatedFrequency;                   // 额定空载频率
    float32_t VoltTole_band;                    // 电压容差带
    float32_t FreqTole_band;                    // 频率容差带
    uint16_t TimeArea;                          // 所属时区
    uint32_t CurrentDateTime;                   // 仪器当前时间
    uint16_t SelfTest_status;                   // 仪器自检状态
    uint16_t Operate_Teststatus;                // 仪器测试数据状态
    uint16_t Operate_CurrProc;                  // 仪器当前运行流程
    uint32_t LockDateTime;                      // 通讯锁定时刻
    uint32_t Runing_Time;                       // 发电机运行时间
    float32_t GenPhaVolt_U;                     // 线路 1 电压 U1
    float32_t GenPhaVolt_V;                     // 线路 2 电压 U2
    float32_t GenPhaVolt_W;                     // 线路 3 电压 U3
    float32_t GenPhaVolt_average;               // 平均相电压U
    float32_t GenLineVolt_Uab;                  // 电压 Uab
    float32_t GenLineVolt_Ubc;                  // 电压 Ubc
    float32_t GenLineVolt_Uca;                  // 电压 Uca
    float32_t GenLineVolt_average;              // 平均线电压L-L
    float32_t GenFrequency;                     // 电压频率
    float32_t GenCurrent_U;                     // 线路 1 电流 I1
    float32_t GenCurrent_V;                     // 线路 2 电流 I2
    float32_t GenCurrent_W;                     // 线路 3 电流 I3
    float32_t GenCurrent_average;               // 三相平均电流 I
    float32_t GenActiPower_U;                   // 有功功率 P1
    float32_t GenActiPower_V;                   // 有功功率 P2
    float32_t GenActiPower_W;                   // 有功功率 P3
    float32_t GenActiPower_total;               // 合计有功功率 P
    float32_t GenReacPower_U;                   // 无功功率 Q1
    float32_t GenReacPower_V;                   // 无功功率 Q2
    float32_t GenReacPower_W;                   // 无功功率 Q3
    float32_t GenReacPower_total;               // 合计无功功率 Q
    float32_t GenAppePower_U;                   // 视在功率 S1
    float32_t GenAppePower_V;                   // 视在功率 S2
    float32_t GenAppePower_W;                   // 视在功率 S3
    float32_t GenAppePower_total;               // 合计视在功率 S
    float32_t PowFactor_U;                      // 功率因数 PF1
    float32_t PowFactor_V;                      // 功率因数 PF2
    float32_t PowFactor_W;                      // 功率因数 PF2
    float32_t PowFactor_average;                // 平均功率因数 PF
    float32_t GenExci_volt;                     // 发电机励磁电压
    float32_t GenExci_current;                  // 发电机励磁电流
    float32_t GenExci_power;                    // 发电机励磁功率
    float32_t LoadPhaVolt_U;                    // 负载机电压 U1
    float32_t LoadPhaVolt_V;                    // 负载机电压 U2
    float32_t LoadPhaVolt_W;                    // 负载机电压 U3
    float32_t LoadPhaVolt_average;              // 负载机平均相电压 U
    float32_t LoadLineVolt_Uab;                 // 负载机线电压 Uab
    float32_t LoadLineVolt_Ubc;                 // 负载机线电压 Ubc
    float32_t LoadLineVolt_Uca;                 // 负载机线电压 Uca
    float32_t LoadLineVolt_average;             // 负载机平均线电压 LL
    float32_t LoadFrequency;                    // 负载机的电压频率
    float32_t LoadPhaseDiff_U2_1;               // 负载机电压 U2-1 相位角
    float32_t LoadPhaseDiff_U3_2;               // 负载机电压 U3-2 相位角
    float32_t LoadExci_volt;                    // 负载机励磁电压
    float32_t LoadExci_current;                 // 负载机励磁电流
    float32_t LoadExci_power;                   // 负载机励磁功率
    uint32_t AccWork_total;                     // 发电机累计时间
    float32_t AccActiEnergy_U;                  // 有功电能 EP1
    float32_t AccActiEnergy_V;                  // 有功电能 EP2
    float32_t AccActiEnergy_W;                  // 有功电能 EP3
    float32_t AccActiEnergy_total;              // 合计有功电能 EP
    float32_t AccReacEnergy_U;                  // 无功电能 EQ1s
    float32_t AccReacEnergy_V;                  // 无功电能 EQ2
    float32_t AccReacEnergy_W;                  // 无功电能 EQ3
    float32_t AccReacEnergy_total;              // 合计无功电能 EQ
    float32_t GenVolt_imbalance;                // 电压不平衡度
    float32_t ZeroSquence_volt;                 // 零序电压
    float32_t NegaSquence_volt;                 // 负序电压
    float32_t PosiSquence_volt;                 // 正序电压
    float32_t GenPhaseDiff_U2_1;                // 角度ΦU2-U1（发电机）
    float32_t GenPhaseDiff_U3_2;                // 角度ΦU3-U1（发电机）
    float32_t CurrentToVoltPhas_U;              // 角度ΦI1-U1（发电机）
    float32_t CurrentToVoltPhas_V;              // 角度ΦI2-U2（发电机）
    float32_t CurrentToVoltPhas_W;              // 角度ΦI3-U3（发电机）
    float32_t VoltDiff_RelaLoad_U;              // 相对负载机的线路 1 电压偏差
    float32_t VoltDiff_RelaLoad_V;              // 相对负载机的线路 2 电压偏差
    float32_t VoltDiff_RelaLoad_W;              // 相对负载机的线路 3 电压偏差
    float32_t VoltDiff_RelaLoad;                // 相对负载机的平均电压偏差
    float32_t PhaseDiff_RelaLoad_U;             // 相对负载机的线路 1 相位偏差
    float32_t PhaseDiff_RelaLoad_V;             // 相对负载机的线路 2 相位偏差
    float32_t PhaseDiff_RelaLoad_W;             // 相对负载机的线路 3 相位偏差
    float32_t PhaseDiff_RelaLoad;               // 相对负载机的平均相位偏差
    uint16_t  OperMode;                         // 操作模式
    uint64_t  TestProceAlarm;                   // 流程告警 
    uint16_t TestDeviceFlag;                    // 被测设备标识
    uint16_t SyncClosingStatus;                 // 合闸状态
    uint16_t LimitAlarm;                        // 限位告警
    float32_t BuildVoltBefore;                  // 建磁电压（前）
    float32_t BuildVoltAfter;                   // 建磁电压（后）
    uint16_t PrimeMotorFreq;                    // 原动机当前运行频率
}RealTimeStatusData_ST;

/*-------------------------------------------- 建压数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                // 页面识别码
    uint16_t  DataAvoid_code;                   // 数据有效识别码
    float32_t EstablishMagnetic_MinVolt;        // AVR最低建磁电压
    float32_t EstablishMagnetic_Frequency;      // AVR建磁时的发电频率
    float32_t GenExci_volt;                     // 直流电压
    float32_t GenExci_current;                  // 直流电流
    uint32_t  Reserved1;                        // 保留
    uint32_t  Reserved2;                        // 保留
    uint32_t  Reserved3;                        // 保留
    uint16_t  VoltDataNumber;                   // 最低建磁电压测试的电压数据曲线点数 N
    uint16_t  VoltDataRate;                     // 最低建磁电压测试的每秒采样点数
}EstaMagnBaseData_ST;

typedef __packed struct{
    uint32_t GenVoltDataCurve_Addr;             // 三相平均相电压曲线 Y 轴数据
    uint32_t PowerVoltDataCurve_Addr;           // AVR电源电压曲线 Y 轴数据
    uint32_t GenExci_VoltDataCurve_Addr;        // AVR输出的励磁电压数据
    uint32_t GenExci_CurrentDataCurve_Addr;     // AVR输出的励磁电流数据
}EstaMagnCurveData_ST;

// 最低建磁电压测试
typedef struct{
    EstaMagnBaseData_ST baseData_st;             // 基础数据
    EstaMagnCurveData_ST curveData_st;           // 波形数据
}EstaMagnData_ST;

/*-------------------------------------------- 极限励磁数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;               // 页面识别码
    uint16_t  DataAvoid_code;                  // 数据有效识别码
    float32_t MaxVoltVolat_U;                  // 线路 1 电压波动最大值
    float32_t MaxVoltVolat_V;                  // 线路 2 电压波动最大值
    float32_t MaxVoltVolat_W;                  // 线路 3 电压波动最大值
    float32_t MaxVoltVolatility;               // 平均电压波动最大值
    float32_t MinVoltVolat_U;                  // 线路 1 电压波动最小值
    float32_t MinVoltVolat_V;                  // 线路 2 电压波动最小值
    float32_t MinVoltVolat_W;                  // 线路 3 电压波动最小值
    float32_t MinVoltVolatility;               // 平均电压波动最小值
    float32_t SteadyVoltage_U;                 // 线路 1 稳态平均电压值
    float32_t SteadyVoltage_V;                 // 线路 2 稳态平均电压值
    float32_t SteadyVoltage_W;                 // 线路 3 稳态平均电压值
    float32_t SteadyAverageVolt;               // 平均稳态电压值
    float32_t GenExci_volt;                    // 直流电压
    float32_t GenExci_current;                 // 直流电流
    float32_t GenExci_power;                   // 直流功率
    uint32_t  Reserved1;                       // 保留
    uint32_t  Reserved2;                       // 保留
    uint32_t  Reserved3;                       // 保留
    uint16_t  VoltDataNumber;                  // 极限励磁测试数据曲线点数 N
    uint16_t  VoltDataRate;                    // 极限励磁测试的每秒采样点数
}CeilingExciBaseData_ST;

typedef __packed struct{
    uint32_t GenVoltDataCurve_Addr;            // 三相平均相电压曲线 Y 轴数据
    uint32_t GenExci_VoltDataCurve_Addr;       // AVR输出的励磁电压数据  
    uint32_t GenExci_CurrentDataCurve_Addr;    // AVR输出的励磁电流数据      
}CeilingExciCurveData_ST;

//极限励磁测试
typedef struct{
    CeilingExciBaseData_ST baseData_st;            // 基础数据
    CeilingExciCurveData_ST curveData_st;          // 波形数据
}CeilingExciData_ST;

/*-------------------------------------------- 波动率数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                // 页面识别码
    uint16_t  DataAvoid_code;                   // 数据有效识别码
    float32_t MaxVoltVolat_U;                   // 线路 1 电压波动最大值
    float32_t MaxVoltVolat_V;                   // 线路 2 电压波动最大值
    float32_t MaxVoltVolat_W;                   // 线路 3 电压波动最大值
    float32_t MaxVoltVolatility;                // 平均电压波动最大值
    float32_t MinVoltVolat_U;                   // 线路 1 电压波动最小值
    float32_t MinVoltVolat_V;                   // 线路 2 电压波动最小值
    float32_t MinVoltVolat_W;                   // 线路 3 电压波动最小值
    float32_t MinVoltVolatility;                // 平均电压波动最小值
    float32_t SteadyVoltage_U;                  // 线路 1 稳态平均电压值
    float32_t SteadyVoltage_V;                  // 线路 2 稳态平均电压值
    float32_t SteadyVoltage_W;                  // 线路 3 稳态平均电压值
    float32_t SteadyAverageVolt;                // 平均稳态电压值
    float32_t VoltDiff_RelaRated_U;             // 相对额定值的线路 1 稳态电压偏差
    float32_t VoltDiff_RelaRated_V;             // 相对额定值的线路 2 稳态电压偏差
    float32_t VoltDiff_RelaRated_W;             // 相对额定值的线路 3 稳态电压偏差
    float32_t VoltDiff_RelaRated;               // 相对额定值的平均稳态电压偏差
    float32_t VoltDeviat_RelaRated_U;           // 相对额定值的线路 1 稳态电压偏差率
    float32_t VoltDeviat_RelaRated_V;           // 相对额定值的线路 2 稳态电压偏差率
    float32_t VoltDeviat_RelaRated_W;           // 相对额定值的线路 3 稳态电压偏差率
    float32_t VoltDeviat_RelaRated;             // 相对额定值的平均稳态电压偏差率
    float32_t MaxFreqVolat;                     // 频率波动最大值
    float32_t MinFreqVolat;                     // 频率波动最小值
    float32_t AverageFreq;                      // 频率波动平均值
    float32_t FreqDiff_RelaRated;               // 相对额定的频率差
    float32_t FreqDeviat_RelaRated;             // 相对额定的频率差百分比
    uint32_t  Reserved1;                        // 保留
    uint32_t  Reserved2;                        // 保留
    uint32_t  Reserved3;                        // 保留
    uint32_t  Reserved4;                        // 保留
    uint16_t  VoltDataNumber;                   // 电压波动数据曲线点数 N
    uint16_t  VoltDataRate;                     // 波动率测试的每秒采样点数
}VolatilityBaseData_ST;

typedef __packed struct{
    uint32_t VoltDataCurve_U_Addr;             // 800 个线路 1 电压波动 Y 轴数据
    uint32_t VoltDataCurve_V_Addr;             // 800 个线路 2 电压波动 Y 轴数据
    uint32_t VoltDataCurve_W_Addr;             // 800 个线路 3 电压波动 Y 轴数据
    uint32_t VoltDataCurve_Addr;               // 800 个3相平均电压波动 Y 轴数据
    uint32_t FreqDataCurve_Addr;               // 800 个频率波动率测试数据
}VolatilityCurveData_ST;

// 波动率测试
typedef struct{
    VolatilityBaseData_ST baseData_st;               // 基础数据
    VolatilityCurveData_ST curveData_st;             // 波形数据
}VolatilityData_ST;

/*-------------------------------------------- 低频保护数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                 // 页面识别码
    uint16_t  DataAvoid_code;                    // 数据有效识别码
    float32_t SteadyVoltage_U;                   // 额定频率的线路 1 稳态平均电压值
    float32_t SteadyVoltage_V;                   // 额定频率的线路 2 稳态平均电压值
    float32_t SteadyVoltage_W;                   // 额定频率的线路 3 稳态平均电压值
    float32_t SteadyAverageVolt;                 // 额定频率的三相平均电压值
    float32_t KneeFreqVolt_U;                    // 低频拐点处线路 1 瞬态电压值
    float32_t KneeFreqVolt_V;                    // 低频拐点处线路 2  瞬态电压值
    float32_t KneeFreqVolt_W;                    // 低频拐点处线路 3  瞬态电压值
    float32_t KneeFreqVoltage;                   // 低频拐点处的 瞬态三相平均电压值
    float32_t RealityKneeFrequency;              // 实际拐点频率值
    float32_t VoltDropRate_KneeFreq;             // 低频保护期间的电压下降率/HZ
    uint32_t Reserved1;                          // 保留1
    uint32_t Reserved2;                          // 保留2
    uint32_t Reserved3;                          // 保留3
    uint16_t VoltDataNumber;                     // 低频保护的电压数据曲线点数 N
    uint16_t VoltDataRate;                       // 低频保护的每秒采样点数
}UnderFreqBaseData_ST;

typedef __packed struct{
    uint32_t GenVoltDataCurve_Addr;             // 500 个3相平均电压数据
    uint32_t GenExci_VoltDataCurve_Addr;        // 低频测试的励磁电压曲线数据
    uint32_t GenExci_CurrentDataCurve_Addr;     // 低频测试的励磁电流曲线数据
    uint32_t GenFreqDataCurve_Addr;             // 低频测试的频率曲线数据
}UnderFreqCurveData_ST;

// 低频保护测试
typedef struct{
    UnderFreqBaseData_ST baseData_st;             // 基础数据
    UnderFreqCurveData_ST curveData_st;           // 波形数据
}UnderFreqData_ST;

/*-------------------------------------------- 启停数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                  // 页面识别码
    uint16_t  DataAvoid_code;                     // 数据有效识别码
    float32_t MaxExciGenVolt_start;               // 启动最高励磁电压时的发电电压值
    float32_t MaxExciGenFreq_start;               // 启动最高励磁电压时的发电频率值
    float32_t MaxExciVoltage_start;               // 启动最高励磁电压时的励磁电压值
    float32_t MaxExciCurrent_start;               // 启动最高励磁电压时的励磁电流值
    float32_t SteadyVoltage_U;                    // 额定频率的线路 1 稳态平均电压值
    float32_t SteadyVoltage_V;                    // 额定频率的线路 2 稳态平均电压值
    float32_t SteadyVoltage_W;                    // 额定频率的线路 3 稳态平均电压值
    float32_t SteadyAverageVolt;                  // 额定频率的三相平均电压值
    float32_t MaxExciGenVolt_stop;                // 停机最高励磁电压时的发电电压值
    float32_t MaxExciGenFreq_stop;                // 停机最高励磁电压时的发电频率值
    float32_t MaxExciVoltage_stop;                // 停机最高励磁电压时的励磁电压值
    float32_t MaxExciCurrent_stop;                // 停机最高励磁电压时的励磁电流值
    uint32_t Reserved1;                           // 保留1
    uint32_t Reserved2;                           // 保留2
    uint32_t Reserved3;                           // 保留3
    uint16_t VoltDataNumber;                      // 启停测试的数据曲线点数 N
    uint16_t VoltDataRate;                        // 启停测试的数据曲线 X 轴间距系数
}StartStopBaseData_ST;

typedef __packed struct{
    uint32_t GenVoltCurve_Addr;                  // 启停测试的3相平均电压 Y 轴曲线数据
    uint32_t ExciVoltCurve_Addr;                 // 启停测试的励磁电压 Y 轴曲线数据
    uint32_t ExciCurrentCurve_Addr;              // 启停测试的励磁电流 Y 轴曲线数据
    uint32_t GenFreqCurve_Addr;                  // 启停测试期间的频率 Y 轴曲线数据
}StartStopCurveData_ST;

// 启停测试
typedef struct{
    StartStopBaseData_ST baseData_st;             // 基础数据
    StartStopCurveData_ST curveData_st;           // 波形数据
}StartStopData_ST;

/*-------------------------------------------- 整定测试数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                   // 页面识别码
    uint16_t  DataAvoid_code;                      // 数据有效识别码
    float32_t GenActiPower_U;                      // 有功功率 P1
    float32_t GenActiPower_V;                      // 有功功率 P2
    float32_t GenActiPower_W;                      // 有功功率 P3
    float32_t GenActiPower_total;                  // 合计有功功率 P
    float32_t GenReacPower_U;                      // 无功功率 Q1
    float32_t GenReacPower_V;                      // 无功功率 Q2
    float32_t GenReacPower_W;                      // 无功功率 Q3
    float32_t GenReacPower_total;                  // 合计无功功率 Q
    float32_t PowFactor_U;                         // 功率因数 PF1
    float32_t PowFactor_V;                         // 功率因数 PF2
    float32_t PowFactor_W;                         // 功率因数 PF2
    float32_t PowFactor_average;                   // 平均功率因数 PF
    float32_t GenExci_volt;                        // 直流电压
    float32_t GenExci_current;                     // 直流电流
    float32_t GenExci_power;                       // 直流功率
    float32_t MaxVoltVolat_U;                      // 线路 1 电压波动最大值
    float32_t MaxVoltVolat_V;                      // 线路 2 电压波动最大值
    float32_t MaxVoltVolat_W;                      // 线路 3 电压波动最大值
    float32_t MaxVoltVolatility;                   // 平均电压波动最大值
    float32_t MinVoltVolat_U;                      // 线路 1 电压波动最小值
    float32_t MinVoltVolat_V;                      // 线路 2 电压波动最小值
    float32_t MinVoltVolat_W;                      // 线路 3 电压波动最小值
    float32_t MinVoltVolatility;                   // 平均电压波动最小值
    float32_t SteadyVoltage_U;                     // 线路 1 稳态平均电压值
    float32_t SteadyVoltage_V;                     // 线路 2 稳态平均电压值
    float32_t SteadyVoltage_W;                     // 线路 3 稳态平均电压值
    float32_t SteadyAverageVolt;                   // 平均稳态电压值
    float32_t VoltDiff_RelaRated_U;                // 相对额定值的线路 1 稳态电压偏差
    float32_t VoltDiff_RelaRated_V;                // 相对额定值的线路 2 稳态电压偏差
    float32_t VoltDiff_RelaRated_W;                // 相对额定值的线路 3 稳态电压偏差
    float32_t VoltDiff_RelaRated;                  // 相对额定值的平均稳态电压偏差
    float32_t VoltDeviat_RelaRated;                // 相对额定值的平均稳态电压偏差率
    float32_t VoltDiff_RelaUnload_U;               // 相对空载的线路 1 稳态电压偏差
    float32_t VoltDiff_RelaUnload_V;               // 相对空载的线路 2 稳态电压偏差
    float32_t VoltDiff_RelaUnload_W;               // 相对空载的线路 3 稳态电压偏差
    float32_t VoltDiff_RelaUnload;                 // 相对空载的平均稳态电压偏差
    float32_t VoltDeviat_RelaUnload;               // 相对空载的平均稳态电压偏差率
    float32_t LoadRegulation_U;                    // 线路 1 负载调整率
    float32_t LoadRegulation_V;                    // 线路 2 负载调整率
    float32_t LoadRegulation_W;                    // 线路 3 负载调整率
    float32_t LoadRegulation;                      // 3相平均负载调整率
    float32_t MaxFreqVolat;                        // 整定频率波动最大值
    float32_t MinFreqVolat;                        // 整定频率波动最小值
    float32_t AverageFreq;                         // 整定平均频率值
    float32_t FreqDiff_RelaUnload;                 // 相对空载的整定频率差
    float32_t FreqDeviat_RelaUnload;               // 相对空载的整定频率差率
    uint16_t  VoltDataNumber;                      // 电压整定数据曲线点数 N
    uint16_t  VoltDataRate;                        // 整定每秒采样点数
}UploadBaseData_ST;

typedef __packed struct{
    uint32_t VoltDataCurve_U_Addr;                 // 800 个线路 1 电压整定数据
    uint32_t VoltDataCurve_V_Addr;                 // 800 个线路 2 电压整定数据
    uint32_t VoltDataCurve_W_Addr;                 // 800 个线路 3 电压整定数据
    uint32_t VoltDataCurve_Addr;                   // 800 个3相平均电压整定据
    uint32_t FreqDataCurve_Addr;                   // 800 个频率整定曲线数据
}UploadCurveData_ST;

// 整定测试数据
typedef struct{
    UploadBaseData_ST baseData_st;                   // 基础数据
    UploadCurveData_ST curveData_st;                 // 波形数据
}UploadData_ST;

/*-------------------------------------------- 突卸测试数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t  ReportPage_number;                     // 页面识别码
    uint16_t  DataAvoid_code;                        // 数据有效识别码
    float32_t PhaseVoltAver_U;                       // 线路 1 稳态平均电压值
    float32_t PhaseVoltAver_V;                       // 线路 2 稳态平均电压值
    float32_t PhaseVoltAver_W;                       // 线路 3 稳态平均电压值
    float32_t PhaseVoltAverage;                      // 平均稳态电压值
    float32_t UnloadMaxVolt_U;                       // 线路 1 突卸瞬态最高电压值
    float32_t UnloadMaxVolt_V;                       // 线路 2 突卸瞬态最高电压值
    float32_t UnloadMaxVolt_W;                       // 线路 3 突卸瞬态最高电压值
    float32_t UnloadMaxVoltage;                      // 3相突卸瞬态最高电压值
    float32_t UnloadRecoverTime_U;                   // 线路 1 电压突卸恢复时长
    float32_t UnloadRecoverTime_V;                   // 线路 2 电压突卸恢复时长
    float32_t UnloadRecoverTime_W;                   // 线路 3 电压突卸恢复时长
    float32_t UnloadRecoverTime;                     // 3相电压突卸恢复时长
    float32_t VoltDiff_RelaSteady_U;                 // 相对稳态平均值的线路 1 最高电压偏差
    float32_t VoltDiff_RelaSteady_V;                 // 相对稳态平均值的线路 2 最高电压偏差
    float32_t VoltDiff_RelaSteady_W;                 // 相对稳态平均值的线路 3 最高电压偏差
    float32_t VoltDiff_RelaSteady;                   // 相对稳态平均值的突卸瞬态最高电压偏差
    float32_t VoltDeviat_RelaSteady_U;               // 相对稳态平均值的线路 1 最高电压偏差率
    float32_t VoltDeviat_RelaSteady_V;               // 相对稳态平均值的线路 2 最高电压偏差率
    float32_t VoltDeviat_RelaSteady_W;               // 相对稳态平均值的线路 3 最高电压偏差率
    float32_t VoltDeviat_RelaSteady;                 // 相对稳态平均值的突卸瞬态最高电压偏差率
    float32_t AverageFreq;                           // 稳态频率平均值
    float32_t UnloadMaxFreq;                         // 突卸最高频率值
    float32_t FreqDiff_RelaSteady;                   // 相对稳态平均值的突卸最高频率差
    float32_t FreqDeviat_RelaSteady;                 // 相对稳态平均值的突卸最高频率差百分比
    uint16_t  VoltDataNumber;                        // 突卸测试的数据曲线点数 N
    uint16_t  VoltDataRate;                          // 突卸测试的每秒采样点数
}SuddenUnloadBaseData_ST;

typedef __packed struct{
    uint32_t VoltDataCurve_U_Addr;                   // 800 个线路 1 电压波动 Y 轴数据
    uint32_t VoltDataCurve_V_Addr;                   // 800 个线路 2 电压波动 Y 轴数据
    uint32_t VoltDataCurve_W_Addr;                   // 800 个线路 3 电压波动 Y 轴数据
    uint32_t VoltDataCurve_Addr;                     // 800 个3相平均电压波动 Y 轴数据
    uint32_t FreqDataCurve_Addr;                     // 800 个频率波动率测试数据
}SuddenUnloadCurveData_ST;

// 突卸测试数据
typedef struct{
    SuddenUnloadBaseData_ST baseData_st;              // 基础数据
    SuddenUnloadCurveData_ST curveData_st;            // 波形数据
}SuddenUnloadData_ST;

/*-------------------------------------------- 参数配置数据 ----------------------------------------------------*/

// 基础参数
typedef __packed struct{
    uint16_t InputLine_Mode;                          // 接线方式
    uint16_t ExciPower_mode;                          // AVR励磁电源形式
    uint16_t WaveRecord_rate;                         // 录波模式
    uint16_t TransientResponse_rate;                  // 瞬态测试响应时间
    uint16_t DeviceAddr;                              // 设备地址
    uint16_t Language_Mode;                           // 语言
    uint16_t TimeArea;                                // 当前时区
    uint32_t SerialNumber;                            // 序列号
    uint8_t  WifiName[30];                            // WIFI名称
    uint8_t  WifiPassWord[20];                        // WIFI密码
    uint8_t  ServerHostName[50];                      // 服务器名称
    uint16_t ServerPort;                              // 端口号
    float32_t PriFreCalibCoefficient;                 // 原动机频率校准系数
}BaseCfg_ST;


// 额定参数
typedef __packed struct{
    float32_t RatedPhaseVolt;                         // 额定相电压
    float32_t RatedLineVolt;                          // 额定线电压
    float32_t RatedFrequency;                         // 额定频率
    float32_t RatedCurrent;                           // 额定发电电流
    float32_t TransfPrimaryVolt;                      // 变压器初级电压
    float32_t TransfSeconeVolt;                       // 变压器次级电压
    float32_t TransfPrimaryCurrent;                   // 电流互感器初级电流
    float32_t TransfSeconeCurrent;                    // 电流互感器次级电流
    float32_t VoltToleBand;                           // 电压容差带
    float32_t FreqToleBand;                           // 频率容差带
    float32_t RatedExciVolt;                          // 额定励磁电压
    float32_t RatedExciCurrent;                       // 额定励磁电流
    float32_t MaxExciVoltage;                         // 极限励磁电压
    float32_t MaxExciCurrent;                         // 极限励磁电流
    float32_t RatedPowerFactor;                       // 额定功率因数
}NominalCfg_ST;

// 严重警告参数
typedef __packed struct{
    float32_t OverVoltPhas_threshold;                 // 发电相电压过压阈值
    float32_t OverVoltLine_threshold;                 // 发电线电压过压阈值
    float32_t OverVoltConfirm;                        // 发电过压确认时间
    float32_t OverCurrent_precent;                    // 发电过电流百分比
    float32_t OverCurrentConfirm;                     // 发电过流确认时间
    float32_t Overload_precent;                       // 有功过载百分比
    float32_t OverAactPowerConfirm;                   // 有功过载确认时间
    float32_t OverReacPower_precent;                  // 无功过载百分比
    float32_t OverReacPowerConfirm;                   // 无功过载确认时间
    float32_t LowPowerFact_threshold;                 // 功率因素太低限制
    float32_t PowerFactorConfirm;                     // 功率因素低确认时间
    float32_t OverExciVolt_precent;                   // 励磁过电压阈值
    float32_t OverExciVoltConfirm;                    // 励磁过电压确认时间
    float32_t OverExciCurrent_precent;                // 励磁过电流阈值
    float32_t OverExciCurrentConfirm;                 // 励磁过电流确认时间
}SeriousAlarmCfg_ST;

// PID调试参数
typedef __packed struct{
    uint16_t ExciDivider_P;                          // 励磁分压调节P
    uint16_t ExciDivider_I;                          // 励磁分压调节I
    uint16_t ExciDivider_D;                          // 励磁分压调节D
    uint16_t ExciShunt_P;                            // 励磁分流调节P
    uint16_t ExciShunt_I;                            // 励磁分流调节I
    uint16_t ExciShunt_D;                            // 励磁分流调节D
    uint16_t BuildVolt_P;                            // 建压调节P
    uint16_t BuildVolt_I ;                           // 建压调节I
    uint16_t BuildVolt_D ;                           // 建压调节D
    uint16_t Reserve1;                               // 保留
    uint16_t Reserve2;                               // 保留
    uint16_t ActivPower_P;                           // 有功调节P
    uint16_t ActivPower_I;                           // 有功调节I
    uint16_t ActivPower_D;                           // 有功调节D
    uint16_t ReacPower_P;                            // 功率因素调节P
    uint16_t ReacPower_I;                            // 功率因素调节I
    uint16_t ReacPower_D;                            // 功率因素调节D
    uint16_t VoltAdjust_P;                           // 电压调节P
    uint16_t VoltAdjust_I;                           // 电压调节I
    uint16_t VoltAdjust_D;                           // 电压调节D
    uint16_t PhaseLockLoop_P;                        // 锁相环调节P
    uint16_t PhaseLockLoop_I;                        // 锁相环调节I
    uint16_t PhaseLockLoop_D;                        // 锁相环调节D
}PidDebugCfg_ST;

// 电机和开关控制参数
typedef __packed struct{
    uint16_t  EngineStart_timeout;              // 原动机启动超时
    float32_t SteadyFreq_threshold;             // 停稳的频率阈值
    uint16_t  EngineStop_timeout;               // 原动机停机超时
    uint16_t  Reserve1;                         // 保留1
    uint16_t  Reserve2;                         // 保留2
    uint16_t  SyncOpen_timeout;                 // 合闸开关断开超时
    uint16_t  SyncClose_timeout;                // 合闸开关闭合超时
    uint16_t  ExciDividSW1_timeout;             // 励磁分流开关1动作超时
    uint16_t  ExciDividSW2_timeout;             // 励磁分流开关2动作超时
    uint16_t  Reserve3;                         // 保留3
    uint16_t  ExciVoltDividZero_timeout;        // 励磁分压器回位超时
    uint16_t  ExciVoltageAdjust_timeout;        // 励磁分压器目标调节超时
    uint16_t  Reserve4;                         // 保留4
    uint16_t  ExciCurrDividZero_timeout;        // 励磁分流器回位超时
    uint16_t  ExciCurrentAdjust_timeout;        // 励磁分流器目标调节超时
    uint16_t  Reserve5;                         // 保留5
    uint16_t  ActivPowerAdjust_timeout;         // 有功功率调节超时
    uint16_t  RealPowerAdjust_timeout;          // 功率因素调节超时
}MotorSwitchCfg_ST;

// 合闸前后检查参数
typedef __packed struct{
    uint16_t AutoSyncClose_timeout;              // 自动同步合闸动作的最大时长
}FrontBackClosingCfg_ST;

// 建压测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                    // 初始原动机转速
    uint16_t  EngineInitStart_time;               // 初始原动机启动时间
    float32_t BuildVolt_initial;                  // 建压初始值
    float32_t BVMotorRotaVoltage;                 // 调压电机每次转动电压
    uint16_t  BVMotorStopTime;                    // 调压电机转动间歇时间
    float32_t BVSucsuss_threshold;                // 建压成功的条件
    uint16_t  BVTest_timeout;                     // 建压测试超时限制
    float32_t BuildVolt_PreStandard;              // 建压预设标准值
}EstaMagnCfg_ST;


// 波动率测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                    // 初始原动机转速
    uint16_t  EngineInitStart_time;               // 初始原动机启动时间
    uint16_t  WaitVoltStab_time;                  // 等待电压稳定时长
    uint16_t  VolatTest_time;                     // 波动率测试时长
}VolatilityCfg_ST;


// 极限励磁测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                     // 初始原动机转速
    uint16_t  EngineInitStart_time;                // 初始原动机启动时间
    uint16_t  WaitVoltStab_time;                   // 等待电压稳定时长
    uint16_t  MaxExciTest_timeout;                 // 极限励磁测试时长
    float32_t ExciVolt_value;                      // 预设励磁电压
    float32_t ExciCurrent_value;                   // 预设励磁电流
}CeilingExciCfg_ST;

// 低频保护测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                    // 初始原动机转速
    uint16_t  EngineInitStart_time;               // 初始原动机启动时间
    uint16_t  WaitVoltStab_time;                  // 稳态电压测试时长
    float32_t EngineShuntDownSpeed;               // 原动机低频测试下限转速
    uint16_t  EngineStop_time;                    // 原动机停机时间
    uint16_t  UnderFreqTest_time;                 // 低频保护测试时长
}UnderFreqCfg_ST;

// 启停测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                     // 初始原动机转速
    uint16_t  EngineInitStop_time;                 // 初始原动机停机时间
    float32_t EngineStartSpeed;                    // 原动机启动转速
    uint16_t  EngineStart_time;                    // 原动机启动时间
    uint16_t  SteadyTest_time;                     // 稳态测试时长
    float32_t EngineStopSpeed;                     // 原动机停机转速
    uint16_t  EngineStop_time;                     // 原动机停机时间
}StartStopCfg_ST;

// 同步合闸参数
typedef __packed struct{
    float32_t SyncVoltDiff_transient;              // 合闸瞬态电压差
    float32_t SyncVoltDiff_average;                // 合闸平均电压差
    float32_t SyncPhaseDiff_transient;             // 合闸瞬态相位差
    float32_t SyncPhaseDiff_average;               // 合闸平均相位差
    float32_t SyncFreqDiff_transient;              // 合闸频率瞬态差
}SyncClosingCfg_ST;

// 整定测试参数
typedef __packed struct{
    float32_t EngineInitSpeed;                    // 初始原动机转速
    uint16_t  EngineInitStart_time;               // 初始原动机启动时间
    float32_t ActivPower_percent;                 // 预设有功功率百分比
    float32_t Current_percent;                    // 预设电流百分比
    float32_t PowerFactor_value;                  // 预设功率因素
    float32_t ExciVolt_value;                     // 预设励磁电压
    float32_t ExciCurrent_value;                  // 预设励磁电流
    uint16_t  WaitVoltStab_time;                  // 等待稳定时间
    uint16_t  SetTest_time;                       // 整定测试时间
}UploadCfg_ST;

// 突卸测试参数
typedef __packed struct{
    uint16_t WaitVoltStab_time;                   // 等待稳定时间
    uint16_t UnloadTest_time;                     // 突卸测试时间
}SuddenUnloadCfg_ST;

// 校准系数
typedef __packed struct{
    uint16_t GenPhaseVoltU;                       // 发电相电压U
    uint16_t GenPhaseVoltV;                       // 发电相电压V
    uint16_t GenPhaseVoltW;                       // 发电相电压W
    uint16_t GenLineVoltUV;                       // 发电线电压UV
    uint16_t GenLineVoltVW;                       // 发电线电压VW
    uint16_t GenLineVoltWU;                       // 发电线电压WU
    uint16_t LoadPhaseVoltU;                      // 负载相电压U
    uint16_t LoadPhaseVoltV;                      // 负载相电压V
    uint16_t LoadPhaseVoltW;                      // 负载相电压W
    uint16_t LoadLineVoltUV;                      // 负载线电压UV
    uint16_t LoadLineVoltVW;                      // 负载线电压VW
    uint16_t LoadLineVoltWU;                      // 负载线电压WU
    uint16_t GenExciteVolt;                       // 发电励磁电压
    uint16_t GenExciteCurr;                       // 发电励磁电流
    uint16_t LoadExciteVolt;                      // 负载励磁电压
    uint16_t LoadExciteCurr;                      // 负载励磁电流
    uint16_t GenCurrentU;                         // 发电电流U
    uint16_t GenCurrentV;                         // 发电电流V
    uint16_t GenCurrentW;                         // 发电电流W
    uint16_t BuildVoltBEF;                        // 建磁电压（前）
    uint16_t BuildVoltAFT;                        // 建磁电压（后）
}CalibrationFactor_ST;

// 负载机配置
typedef __packed struct{
    float32_t LoadStartFreg;                      // 启动频率
    float32_t LoadStopFreg;                       // 停止频率
    float32_t LoadInitialPWM;                     // 初始PWM
    float32_t LoadRatedFreg;                      // 额定频率
    float32_t LoadLowFregTrip;                    // 低频拐点
    float32_t LoadLowFregRate;                    // 低频下降率
    uint16_t  LoadHwshutOffDelay;                 // 硬件关断保护时长
    uint16_t  LoadSlowStartEnable;                // 软起动使能
    uint16_t  LoadSlowStartDelay;                 // 软起动时长
    float32_t GovMiddleValue;                     // 调速器中性值
}LoadEquConfig_ST;

typedef __packed struct{
    uint16_t ReportPage_number;                    // 页面识别码
    BaseCfg_ST baseData_st;                        // 基础参数
    NominalCfg_ST nominalCfg_st;                   // 额定参数
    SeriousAlarmCfg_ST seriousAlarmCfg_st;         // 严重告警参数
    PidDebugCfg_ST pidDebugCfg_st;                 // PID调试参数
    MotorSwitchCfg_ST motorSwitchCfg_st;           // 电机和开关控制参数
    FrontBackClosingCfg_ST f_BackClosingCfg_st;    // 合闸后检查
    EstaMagnCfg_ST estaMagnCfg_st;                 // 建压测试
    VolatilityCfg_ST volatilityCfg_st;             // 波动率测试
    CeilingExciCfg_ST ceilingExciCfg_st;           // 极限励磁测试
    UnderFreqCfg_ST underFreqCfg_st;               // 低频保护测试
    StartStopCfg_ST startStopCfg_st;               // 启停测试
    SyncClosingCfg_ST syncClosingCfg_st;           // 同步合闸
    UploadCfg_ST P100_uploadCfg_st;                // 100%有功功率整定测试
    UploadCfg_ST P60_uploadCfg_st;                 // 60%有功功率整定测试
    UploadCfg_ST C60_uploadCfg_st;                 // 60%电流整定测试
    SuddenUnloadCfg_ST suddenUnloadCfg_st;         // 突卸测试
    CalibrationFactor_ST calibrationFactor_st;     // 校准系数
    LoadEquConfig_ST loadEquConfig_st;             // 负载机配置
}ParameterCfgData_ST;

/*-------------------------------------------- 临时配置数据 ----------------------------------------------------*/
typedef __packed struct{
    uint16_t ReportPage_number;                   // 页面识别码
    uint16_t Control_order;                       // 控制命令
    uint16_t Reserve1;                            // 保留1
    uint16_t Reserve2;                            // 保留2
    uint16_t ManualAdjust_order;                  // 电机或功率因素调节
    uint16_t ProcMode_Swtich;                     // 流程模式切换
    uint16_t SyncCloseMode_Switch;                // 自动/手动同步合闸方式
    uint16_t TestProcess_order;                   // 自动测试模式
}DeviceControl_ST;

typedef __packed struct{
    uint32_t modifyDateTime;                      // 修改仪器时间
    uint8_t Product_Model[16];                    // 产品型号
    uint8_t Product_number[20];                   // 产品编号
    uint16_t LoginStatus;                         // 登录状态
    uint16_t DeviceNumber;                        // 设备编码
}ProcedurePara_ST;

typedef __packed struct{
    DeviceControl_ST deviceControl_st;
    ProcedurePara_ST procedurePara_st;
}TempConfig_ST;

// 曲线数据临时缓冲区
typedef __packed struct{
    float dataBuff[DataBuff_ST];                          // 数据缓冲区
    uint16_t index;                                 // 当前存储数据索引
}CurveDataBuff_ST;

// 定义结构体
typedef struct {
    uint16_t sourData;  // 指向 uint16_t 类型的指针
    uint32_t addr;       // 32 位无符号整数地址
} RemoteDataAddress_ST;

extern RemoteDataAddress_ST share_RemoteDataAddress_st;

extern RealTimeStatusData_ST share_RealTimeData_st;
extern RealTimeStatusData_CKP share_RealTimeData_ckp;
extern EstaMagnData_ST share_EstaMagnData_st;        
extern CeilingExciData_ST share_CeilingExciData_st;  
extern VolatilityData_ST share_VolatilityData_st;    
extern UnderFreqData_ST share_UnderFreqData_st;      
extern StartStopData_ST share_StartStopData_st;      
extern UploadData_ST share_UploadData_st;            
extern SuddenUnloadData_ST share_SuddenUnloadData_st;
extern ParameterCfgData_ST share_parameterCfgData_st;
extern TempConfig_ST share_TempConfig_st;



void sharebuffer_Init(void);
void sharebuff_RealTimeDataUpdate(void);
void sharebuff_RealTimeDataUpdate_CKP(void);
uint8_t GetShareBufferDataContent(void *Pevent, uint8_t OperaType, uint8_t *Source);
uint8_t FillShareBufferDataContent(void *Pevent, uint8_t OperaType, uint8_t *Source, uint8_t Value, uint8_t Number);
uint8_t GetFlagShareBufferDataContent(void *Pevent, uint8_t OperaType, uint8_t *Source, uint16_t BitSequence);
uint8_t ModifyFlagShareBufferDataContent(void *Pevent, uint8_t OperaType, uint8_t *Source, uint16_t BitSequence, uint8_t OperaOpt);
uint8_t SetOSFlagsForNewInform(OS_FLAG_GRP *Pevent,OS_FLAGS Flags);
uint8_t ClrOSFlagsForNewInform(OS_FLAG_GRP *Pevent,OS_FLAGS Flags);
uint8_t ExchangeShareBufferDataContent(void *Pevent, uint8_t OperaType, uint8_t *Target, uint8_t *Source, uint8_t Number);
#ifdef __cplusplus
}
#endif
#endif   /*   __EXTEND_EEPROM_H__   */